package com.qingfeng.manager.service;

import com.github.pagehelper.PageInfo;
import com.qingfeng.core.config.database.ReadOnlyConnection;
import com.qingfeng.core.dao.UserinfoDao;
import com.qingfeng.core.entity.Userinfo;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @description:
 * @author:LWY
 * @date: 2017/10/16 16:53
 * @modified:
 */
@Service
public class UserinfoService {

    @Autowired
    UserinfoDao userinfoDao;

    @ReadOnlyConnection
    public PageInfo<Userinfo> get(Integer page, Integer rows) {

        return userinfoDao.get(page, rows, null);
    }

    /**
     * 获取用户信息
     *
     * @param username 用户名
     * @param pwd      密码
     * @return
     */
    @ReadOnlyConnection
    public Userinfo getUser(String username, String pwd) {
        return userinfoDao.getUser(username, pwd);
    }

    /**
     * @param pageNum
     * @param pageSize
     * @param username 用户名
     * @param state    状态
     * @return 所有用户
     */
    public PageInfo<Userinfo> get(Integer pageNum, Integer pageSize, String username, String state) {
        return userinfoDao.get(pageNum, pageSize, username, state);
    }

    /**
     * 保存用户
     *
     * @param id       id
     * @param username 用户名
     * @param pwd      密码
     * @return
     */
    public Userinfo save(String id, String username, String pwd) {
        //获得当前用户
        Userinfo userinfo = (Userinfo) SecurityUtils.getSubject().getPrincipal();
        return userinfoDao.save(id, username, pwd, userinfo.getId());
    }

    /**
     * 删除用户
     *
     * @param ids
     */
    @Transactional
    public void del(String[] ids) {
        userinfoDao.del(ids);
    }

    /**
     * 保存授权
     *
     * @param userinfo_id 用户id
     * @param role_ids    角色id数组
     */
    @Transactional
    public void saveRole(String userinfo_id, String[] role_ids) {
        //获得当前用户
        Userinfo userinfo = (Userinfo) SecurityUtils.getSubject().getPrincipal();
        userinfoDao.saveRole(userinfo_id, role_ids, userinfo.getId());
    }
}
